package com.zeratul.common.event.base.callback;

import com.zeratul.common.event.domain.ZtEvent;

/**
 * 消息发布回调结果
 */
public interface BaseSendCallback {

    /**
     * 是否处理当前消息的回调，true-会执行sendCallback方法，否则不会执行
     */
   default <T> boolean isSupport(ZtEvent<T> ztEvent, Throwable t) {
       return true;
   }

    /**
     * 消息发送结果回调，返回false则中断整个回调链的处理
     * @param ztEvent - 发送的消息体
     * @param t - 发送异常信息，如果为null，则表示发送成功
     * @param <T>
     */
    <T> boolean sendCallback(ZtEvent<T> ztEvent, Throwable t);
}
